#pragma once
#include "Block.h"
#include "Key.h"
#include "BlockData.h"

namespace AppliedCryptography
{
	namespace AC = AppliedCryptography;

	template<unsigned int TKeySize, unsigned int TBlockSize, class TCryptor, class TLBHandle>
	class ChainingMode
	{
	private:
		//AC::Cryptor<TKeySize, TBlockSize>
	public:
		virtual void Process(const TCryptor& cryptor, 
			const TLBHandle& lbHandler,
			const Block<TBlockSize>& iv, 
			const BlockData<TBlockSize>& input, 
			BlockData<TBlockSize>& output) const = 0;
	};
};
